import { defineStore } from "pinia";
import { ref } from "vue";

export const useLogStore = defineStore("log", () => {
  // 消息日志
  const messages = ref([]);
  const maxMessages = 100; // 最大保留消息数

  // 添加消息
  function addMessage(message) {
    // 创建消息对象
    const messageObj = {
      content: message,
      timestamp: new Date().toLocaleTimeString(),
    };

    // 从数组开头插入新消息，而不是末尾追加
    messages.value.unshift(messageObj);

    // 限制消息数量，防止过多消息导致性能问题
    if (messages.value.length > 200) {
      messages.value = messages.value.slice(0, 200);
    }

    // 保存到本地存储
    saveToLocalStorage();
  }

  // 清空消息
  function clearMessages() {
    messages.value = [];
    saveToLocalStorage();
  }

  // 保存到本地存储
  function saveToLocalStorage() {
    try {
      localStorage.setItem("wx_log_messages", JSON.stringify(messages.value));
    } catch (error) {
      console.error("保存日志失败:", error);
    }
  }

  // 从本地存储加载
  function loadFromLocalStorage() {
    try {
      const savedMessages = localStorage.getItem("wx_log_messages");
      if (savedMessages) {
        messages.value = JSON.parse(savedMessages);
      }
    } catch (error) {
      console.error("加载日志失败:", error);
    }
  }

  // 初始化
  function initialize() {
    loadFromLocalStorage();
  }

  // 执行初始化
  initialize();

  return {
    messages,
    addMessage,
    clearMessages,
  };
});
